class Solution {
public:
    vector<int> missingTwo(vector<int>& nums) {
        int n = nums.size() + 2;
        int tem = 0;
        for (auto& e : nums)
            tem ^= e;
        for (int i = 1; i <= n; i++)
        {
            tem ^= i;
        }
        int lsb = (tem == INT_MIN ? tem : tem & (-tem));
        int type1 = 0, type2 = 0;
        for (int i = 0; i <= n; i++)
        {
            if (i & lsb)
            {
                type1 ^= i;
            }
            else
            {
                type2 ^= i;
            }
        }
        for (auto& e : nums)
        {
            if (e & lsb)
            {
                type1 ^= e;
            }
            else
            {
                type2 ^= e;
            }
        }
        return { type1, type2 };
    }
};